import Vue from "vue";
import VueRouter from "vue-router";
import Main from "../views/Main.vue";

import CategoryEdit from "../views/category/Edit.vue";
import CategoryList from "../views/category/List.vue";

import ItemEdit from "../views/item/Edit.vue";
import ItemList from "../views/item/List.vue";

import HeroEdit from "../views/hero/Edit.vue";
import HeroList from "../views/hero/List.vue";

import ArticleEdit from "../views/article/Edit.vue";
import ArticleList from "../views/article/List.vue";

import AdEdit from "../views/ad/Edit.vue";
import AdList from "../views/ad/List.vue";

import AdminUserEdit from "../views/admin_user/Edit.vue";
import AdminUserList from "../views/admin_user/List.vue";

import Login from "../views/login/login.vue";

Vue.use(VueRouter);

const routes = [
  {
    path: "/login",
    name: "login",
    component: Login,
    meta: { isPublic: true },
  },
  {
    path: "/",
    name: "main",
    component: Main,
    redirect: "/articles/create",
    children: [
      { path: "/categories/create", component: CategoryEdit },
      { path: "/categories/edit/:id", component: CategoryEdit, props: true },
      { path: "/categories/list", component: CategoryList },
      { path: "/items/create", component: ItemEdit },
      { path: "/items/edit/:id", component: ItemEdit, props: true },
      { path: "/items/list", component: ItemList },
      { path: "/heroes/create", component: HeroEdit },
      { path: "/heroes/edit/:id", component: HeroEdit, props: true },
      { path: "/heroes/list", component: HeroList },
      { path: "/articles/create", component: ArticleEdit },
      { path: "/articles/edit/:id", component: ArticleEdit, props: true },
      { path: "/articles/list", component: ArticleList },
      { path: "/ads/create", component: AdEdit },
      { path: "/ads/edit/:id", component: AdEdit, props: true },
      { path: "/ads/list", component: AdList },
      { path: "/admin_users/create", component: AdminUserEdit },
      { path: "/admin_users/edit/:id", component: AdminUserEdit, props: true },
      { path: "/admin_users/list", component: AdminUserList },
    ],
  },
];

const router = new VueRouter({
  routes,
});

router.beforeEach((to, from, next) => {
  if (!to.meta.isPublic && !localStorage.token) {
    return next("/login");
  }
  next();
});

export default router;
